/* 1 应用场景如果你写的类实例化之后毫无用处此时我可以把他定义为抽象类
或者你也可以把他作为一个基类-> 通过继承一个派生类去实现基类的一些方法 */
abstract class Ab {
   public name:string
}
// new Ab() //报错抽象类无法被实例化
/* 2 我们B类实现了A定义的抽象方法 如不实现就不报错
 我们定义的抽象方法必须在派生类实现 */
abstract class A3 {
   name: string
   constructor(name: string) {
      this.name = name;
   }
   print(): string {
      return this.name
   }
 
   abstract getName(): string
}
 
class BA extends A3 {
   constructor() {
      super('小满')
   }
   getName(): string {
      return this.name
   }
}
 
let ba = new BA();
 
console.log(ba.getName());